<html>
<head>
    <title>Timeline demo</title>


    <script type="text/javascript" src="http://www.google.com/jsapi"></script>
    <script type="text/javascript" src="../timeline.js"></script>
    <link rel="stylesheet" type="text/css" href="../timeline.css">

    <style type="text/css">
        body {
            color: #4D4D4D;
            font: 10pt arial;
        }
    </style>

    <script type="text/javascript">
        var timeline = null;
        var data = null;
        var order = 1;
        var truck = 1;

        google.load("visualization", "1");

        // Set callback to run when API is loaded
        google.setOnLoadCallback(drawVisualization);

        // Called when the Visualization API is loaded.
        function drawVisualization() {
            
            // specify options
            var options = {
                stackEvents: false,
                start: new Date(),
                end: new Date(1000*60*60*24 + (new Date()).valueOf()),
                editable: true,
                animate: false,
                eventMargin: 10,  // minimal margin between events
                eventMarginAxis: 5, // minimal margin between events and the axis
                showMajorLabels: true,
                cluster: true,
                axisOnTop: true,
                snapEvents: true,
                dragAreaWidth: 20
            };

            // Instantiate our timeline object.
            timeline = new links.Timeline(document.getElementById('mytimeline'), options);

            // Create and populate a data table.
            data = new google.visualization.DataTable();
            data.addColumn('datetime', 'start');
            data.addColumn('datetime', 'end');
            data.addColumn('string', 'content');
            data.addColumn('string', 'group');

            addData();

            // Draw our timeline with the created data and options
            timeline.draw(data);

            google.visualization.events.addListener(timeline, 'select',
                    function () {
                        //console.log('select', timeline.getSelection()[0]);
                    }
            );

            google.visualization.events.addListener(timeline, 'edit',
                    function() {
                        //console.log('edit')
                    }
            );

            google.visualization.events.addListener(timeline, 'change',
                    function() {
                        //console.log('change')
                        //timeline.cancelChange();
                    }
            );

            google.visualization.events.addListener(timeline, 'add',
                    function() {
                        //console.log('add')
                        //timeline.cancelAdd();
                    }
            );

            /*
             console.profile();
             var count = 10;
             for (var i = 0; i < count; i++) {
             timeline.redraw();
             }
             console.profileEnd();
             //*/
        }

        /**
         * Get URL parameter
         * http://www.netlobo.com/url_query_string_javascript.html
         */
        function gup( name ) {
            name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
            var regexS = "[\\?&]"+name+"=([^&#]*)";
            var regex = new RegExp( regexS );
            var results = regex.exec( window.location.href );
            if( results == null )
                return "";
            else
                return results[1];
        }

        var count = (Number(gup('count')) || 100);

        function addData() {
            for (var j = 0; j < 4; j++) {
                var date = new Date();
                for (var i = 0; i < count/4; i++) {
                    date.setHours(date.getHours() +  4 * (Math.random() < 0.2));
                    var start = new Date(date);

                    date.setHours(date.getHours() + 2 + Math.floor(Math.random()*4));
                    var end = new Date(date);

                    var orderText = "Order " + order;
                    var truckText = "Truck " + truck;
                    data.addRow([start, end, orderText, truckText]);
                    order++;
                }
                truck++;
            }
        }
    </script>
</head>

<body onresize="/*timeline.checkResize();*/">
<h1>Timeline grouping performance</h1>

<p>
    Choose a number of items:
    <a href="?count=20">20</a>,
    <a href="?count=100">100</a>,
    <a href="?count=1000">1000</a>,
    <a href="?count=10000">10000</a>
<p>
<p>
    Current number of items: <span id='count'>100</span>
</p>

<div id="mytimeline"></div>

<div id="info"></div>

<script>
    document.getElementById('count').innerHTML = count;
</script>

</body>
</html>
